
package kgame5.k3d.core.camera {
import kgame5.k3d.core.math.Vector3D;
import kgame5.kmath.MathDG;
import kgame5.kmath.TriMath;

/**
 *一个摄象机类，存储的是自己的位置和焦点位置
*左手坐标系里注意摄象机的z轴是指向目标的
*
*摄象机增加一种模式，POSIMODE_CMT_FREE_SPRING,弹性的盘旋
*
*摄象机增加一种模式，平行 发现还是平行的效果比较好，如果固定相机位置和视点位置都很高，则会出现透视的问题
*
*屏幕震动是不能通过摄像机动而实现的，因为camer动了则整个屏幕都要重绘的
*
*弹性摄像机，带盘旋
*初始位置是高度400,半径900,看向原点
*
*弹簧是有问题的，取消掉吧
*/
public class CameraBee extends Camera3D{
	//________________________Static_______________________
	
	//摄像机位置
	public var pan:int;//盘旋的角度，z+是0度，x+是90度
	public var radius:int;//到target的距离
	public var y:int;//摄像机高度
	
	//焦点位置
	public var target:Vector3D=new Vector3D(); //需要追踪的焦点人物
	
	//_______________________Method__________________________
	public function CameraBee(){
		super();
		
		pan=180;
		radius=900;
		y=500;
	}

	override public function Update():void {
		
		//--焦点位置
		v3d_aim.copy(target);
		
		
		//--摄象机位置
		pan=MathDG.C360(pan);
		
		v3d_eye.x = v3d_aim.x + radius*TriMath.sin(pan);
		v3d_eye.z = v3d_aim.z + radius*TriMath.cos(pan);
		
		v3d_eye.y=y;
		
		//--很关键的逻辑，计算是Mwc
		super.Update();
	}
}//end of class
}